package com.project.weimi.utils;

import java.net.HttpCookie;
import java.util.List;
import java.util.Map;

import org.xutils.x;
import org.xutils.common.Callback.Cancelable;
import org.xutils.common.Callback.CommonCallback;
import org.xutils.http.RequestParams;
import org.xutils.http.cookie.DbCookieStore;

import com.project.weimi.application.Constant;

public class XUtil {

	/**
	 * 发送Get请求
	 * @param url
	 * @param map
	 * @param callback
	 * @return
	 */
	public static <T> Cancelable Get (String url,Map<String,String> map,CommonCallback<T> callback){
		RequestParams params = new RequestParams(url);
		if(null != map){
			for(Map.Entry<String, String> entry : map.entrySet()){
				params.addQueryStringParameter(entry.getKey(), entry.getValue());
			}
		}
		Cancelable cancelable = x.http().get(params, callback);
		
		return cancelable;
	}
	
	/**
	 * 发送Post请求(需传参数的)
	 * @param url
	 * @param map
	 * @param callback
	 * @return
	 */
	public static <T> Cancelable post(String url,Map<String,Object> map,CommonCallback<T> callback){
		RequestParams params = new RequestParams(url);
		if(null != map){
			for(Map.Entry<String, Object> entry : map.entrySet()){
				params.addParameter(entry.getKey(), entry.getValue());
			}
			//如果参数过长，请直接指定
			//params.addBodyParameter("name","long String");
		}
		Cancelable cancelable = x.http().post(params, callback);
		return cancelable;
	}
	
	/**
	 * 发送Post请求(传json字符串)
	 * @param url
	 * @param callback
	 * @return
	 */
	public static <T> Cancelable PostWithJson(String url,CommonCallback<T> callback){
		RequestParams params = new RequestParams(url);
		
		//params.setAsJsonContent(true);
		// 设置要传给后台的json字符串
		//params.setBodyContent(paramJsonObject.toString());
		
		Cancelable cancelable = x.http().post(params, callback);
		return cancelable;
	}
	
	/**
	 * 发送Post请求(不用传参数的)
	 * @param url
	 * @param callback
	 * @return
	 */
	public static <T> Cancelable Post(String url,CommonCallback<T> callback){
		RequestParams params = new RequestParams(url);
		Cancelable cancelable = x.http().post(params, callback);
		return cancelable;
	}
	
//	获取Cookies，并且带给后台
//	xutils3.0+默认在访问时会将cookies和sessionId保存下来，并在下次访问时一并传给后台，但若是用户把程序退出后，
//	重新进行访问就会保存最新的cookies与sessionId，会导致sessionid有可能导致不一致的情况，
//	这种情况下我们可以自己保存下cookies与sessionId并在每次请求后台接口时传递过去。
//	比如在登陆成功后保存下cookies与session
//  详情见网址：http://blog.csdn.net/u010663758/article/details/51296248

	
}
